#include "exti.h"

#include "Task_mpu.h"



//osd exti init
void at7456e_refresh_exint_init(void)
{
		gpio_init_type gpio_init_struct;
    exint_init_type exint_init_struct;
	
		crm_periph_clock_enable(CRM_SCFG_PERIPH_CLOCK, TRUE);
    crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
	
    gpio_default_para_init(&gpio_init_struct);

    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;
    gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
    gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
    gpio_init_struct.gpio_pins = GPIO_PINS_11;
    gpio_init_struct.gpio_pull = GPIO_PULL_UP;
    gpio_init(GPIOA, &gpio_init_struct);


    scfg_exint_line_config(SCFG_PORT_SOURCE_GPIOA, SCFG_PINS_SOURCE11);

    exint_default_para_init(&exint_init_struct);
    exint_init_struct.line_enable = TRUE;
    exint_init_struct.line_mode = EXINT_LINE_INTERRUPUT;
    exint_init_struct.line_select = EXINT_LINE_11;
    exint_init_struct.line_polarity = EXINT_TRIGGER_FALLING_EDGE;
    exint_init(&exint_init_struct);
    exint_flag_clear(EXINT_LINE_11);
    nvic_irq_enable(EXINT15_10_IRQn, OSD_preempt_priority, OSD_sub_priority);
}


void EXINT15_10_IRQHandler(void)
{
	BaseType_t xHigherPriorityTaskWoken = pdFALSE;
	
	if(exint_flag_get(EXINT_LINE_11) != RESET)
	{
		exint_flag_clear(EXINT_LINE_11);
		xSemaphoreGiveFromISR(OsdRefresh_Sem,&xHigherPriorityTaskWoken);//osd刷屏信号量
	}
}